package cn.edu.tcu.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;

public class DBTestDriver {

	public static void main(String[] args) {
		/*
		 * 新建 dynamic web project 
		 * 连接数据库：将驱动jar引入项目，将数据库驱动jar拷入项目的WebContent/WEB-INF/lib下即可
		 * 
		 * 
		 */
		try {
			// 1、注册驱动：需要使用数据库驱动类型、数据服务器访问地址、用户名、密码
			// 数据库驱动类型
			String dbDriverType = "com.mysql.jdbc.Driver";
			// 数据服务器访问地址
			/*
			 * jdbc:mysql://127.0.0.1:3306/dbname?useUnicode=true&characterEncoding=UTF-8
			 * 中：127.0.0.1表示数据库服务器在本机；也可以使用localhost替代；还可以 ip地址、主机名
			 * 3306是mysql客户端连接的监听端口；
			 * dbname是mysql数据库名
			 * useUnicode=true&characterEncoding=UTF-8 是数据库连接的编码格式
			 */
			String dbURL = "jdbc:mysql://127.0.0.1:3306/dbshopping?useUnicode=true&characterEncoding=UTF-8";
			// 用户名
			String dbUser = "root";
			// 密码
			String dbPSW = "root";
			// 使用反射机制注册数据库服务驱动
			Class.forName(dbDriverType).newInstance();
			// 2、获取数据连接对象：connection
			Connection conn = DriverManager.getConnection(dbURL, dbUser, dbPSW);
			// 3、获取数据库操作对象：statement（preparedstatement）
			Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
					ResultSet.CONCUR_UPDATABLE);
			// 4、组织数据操作sql语句
			String strSql = "select * from tbadmins";
			// 5、执行数据操作处理
			ResultSet rs = st.executeQuery(strSql);
			// 6、根据数据操作结果进行业务逻辑处理
			// 遍历结果集显示查询结果
			while (rs != null && rs.next()) {
				// 使用get方法获取字段内容
				System.out.print("第一列：" + rs.getObject(1));
				System.out.println(" adminid: " + rs.getObject("adminid"));
			}
			
			// 将光标放到结果集的最前面（第一行之前）,在oracle中需要在创建Statement时设置两个属性值；
			rs.beforeFirst();
			System.out.println("-----------------");
			// 获取与列相关的信息
			ResultSetMetaData rsmd = rs.getMetaData();
			// 获取查询结果集的列数
			int colCount = rsmd.getColumnCount();
			while (rs != null && rs.next()) {
				// 使用for循环输出当前结果集中当前行中所有的列信息
				for(int i =1;i<=colCount;i++){
					System.out.print("\t"+rsmd.getColumnLabel(i) +"-"+rs.getObject(rsmd.getColumnLabel(i)));
				}
				System.out.println();
			}
			// 7、关闭资源
			if (rs != null) {
				rs.close();
			}
			if (st != null) {
				st.close();
			}
			if (conn != null) {
				conn.close();
			}
		} catch (Exception e) {
			// 数据库连接处理异常
			System.out.println("Mysql-Jdbc:数据库连接异常");
			e.printStackTrace();
		}

	}

}
